Arduino-তে Interrupts একটি গুরুত্বপূর্ণ ফিচার যা একটি নির্দিষ্ট ইভেন্টের উপর ভিত্তি করে প্রোগ্রামকে স্থগিত করে এবং একটি নির্দিষ্ট ফাংশনকে চালু করে। এতে প্রোগ্রাম দ্রুত সাড়া দিতে পারে। Arduino-তে দুটি প্রধান ধরনের Interrupts রয়েছে: External Interrupts এবং Pin Change Interrupts।
External Interrupts
External Interrupts তখন ব্যবহৃত হয় যখন একটি আউটসাইড ডিভাইস (যেমন বাটন) কোনো সিগন্যাল পাঠায়। Arduino-তে সাধারণত INT0 (পিন 2) এবং INT1 (পিন 3) ব্যবহার করা হয়।
উদাহরণ: External Interrupt
volatile bool buttonPressed = false;
void setup() {
pinMode(2, INPUT_PULLUP); // পিন 2 ইনপুট হিসেবে কনফিগার করা
attachInterrupt(digitalPinToInterrupt(2), buttonISR, FALLING); // পিন 2 এ ইন্টারাপ্ট যুক্ত করা
Serial.begin(9600);
}
void loop() {
if (buttonPressed) {
Serial.println("Button was pressed!");
buttonPressed = false; // ইন্টারাপ্ট ফ্ল্যাগ রিসেট করা
}
}
void buttonISR() {
buttonPressed = true; // ইন্টারাপ্ট ফ্ল্যাগ সেট করা
}কোড বিশ্লেষণ
volatile: ভেরিয়েবলটি ইন্টারাপ্ট ফাংশনের দ্বারা পরিবর্তিত হচ্ছে, তাই এটিvolatileহিসেবে ডিফাইন করা হয়েছে যাতে প্রধান লুপে সঠিকভাবে পড়া যায়।attachInterrupt(): এই ফাংশনটি পিন 2-তে একটি ইন্টারাপ্ট যুক্ত করে, যা পিনের মান FALLING (নিচের দিকে পরিবর্তন) হলেbuttonISRফাংশনটি কল করে।buttonISR(): ইন্টারাপ্ট ফাংশনটি ব্যতীত, এটি একটি ফ্ল্যাগ সেট করে যাতে মূল লুপে বোতাম চাপার তথ্য পাওয়া যায়।
Pin Change Interrupts
Pin Change Interrupts তখন ব্যবহৃত হয় যখন কোনো পিনের মান পরিবর্তন হয় (HIGH থেকে LOW বা LOW থেকে HIGH)। Arduino-তে সমস্ত ডিজিটাল পিনে Pin Change Interrupts সক্রিয় করা যায়।
উদাহরণ: Pin Change Interrupt
volatile bool ledState = false;
void setup() {
pinMode(8, INPUT_PULLUP); // পিন 8 ইনপুট হিসেবে কনফিগার করা
pinMode(13, OUTPUT); // পিন 13 আউটপুট হিসেবে কনফিগার করা
PCMSK |= (1 << PCINT0); // পিন 8 এ পিন চেঞ্জ ইন্টারাপ্ট সক্রিয় করা
GIMSK |= (1 << PCIE); // পিন চেঞ্জ ইন্টারাপ্ট সক্রিয় করা
sei(); // গ্লোবাল ইন্টারাপ্ট সক্রিয় করা
}
void loop() {
// লুপ খালি রাখা হয়েছে
}
ISR(PCINT0_vect) {
ledState = !ledState; // LED স্টেট পরিবর্তন
digitalWrite(13, ledState); // LED এর স্টেট পরিবর্তন করা
}কোড বিশ্লেষণ
PCMSKএবংGIMSK: পিন চেঞ্জ ইন্টারাপ্টস সক্রিয় করার জন্য পোর্ট এবং গ্লোবাল ইন্টারাপ্ট সেটিংস কনফিগার করা হয়।sei(): গ্লোবাল ইন্টারাপ্ট সক্রিয় করা।ISR(PCINT0_vect): এই ফাংশনটি পিন চেঞ্জ ইভেন্টের সময় কল হয়, যেখানে LED এর স্টেট পরিবর্তন করা হয়।
সারসংক্ষেপ
- External Interrupts সাধারণত বোতাম বা অন্যান্য বাহ্যিক ডিভাইসের জন্য ব্যবহৃত হয়, যা সরাসরি পিনে সিগন্যাল পাঠায়।
- Pin Change Interrupts বিভিন্ন ডিজিটাল পিনে পরিবর্তন হলে কাজ করে এবং একাধিক পিনের পরিবর্তন ট্র্যাক করতে সহায়ক।
Arduino-তে ইন্টারাপ্ট ব্যবহার করার মাধ্যমে, আপনি প্রোগ্রামকে দ্রুত এবং কার্যকরভাবে সাড়া দিতে সক্ষম হবেন, যা আপনার প্রকল্পের কার্যকারিতা উন্নত করে।
Read more